モデルの構築
Eggplant DAIのモデルは、テストしたいアプリケーション、インターフェース、またはウェブサイトのシンプルな視覚的表現です。モデルはテスト活動を調整するのに役立ち、テストしているUIの側面の表現を含みます。モデルは、有用であるために完全であるか、複雑である必要はありません。
あるいは、スクリプトを介してテストを実行することを好む場合は、このセクションをスキップして、スクリプトに基づく実行方法に従うことをお勧めします。
このページでは、モデル作成、バージョニング、操作の基本を説明します。
モデルとは何か?
視覚的には、Eggplant DAIモデルはフローチャートに似ていますが、機能的には、それはよりロードマップのようなものです。ユーザーの旅は、定義したstateやActionの間で任意の数の方向に進むことができます。モデルを実行すると、Eggplant DAIのアルゴリズムが探索的テストを行うために、シミュレーションされたユーザージャーニーがフライに生成されます。
モデルから特定のユーザージャーニーをカバーするtest casesも作成できます。
モデルのStatesとActionsは、UI要素と遷移を表現します。stateは、アプリケーションの画面、ウェブサイトのページ、あるいはダイアログボックスウィンドウのようなものです。Actionは_state内_で行われ、ユーザーを_state間_で移動させることもできます。モデルを実行すると、Eggplant DAIは設定したstateとActionを通じて可能なユーザージャーニーを自動化します。
モデルの概要を作成する
Eggplant DAIでモデルを作成する前に、テストしたいインターフェースの部分と、それらの部分がどのように接続されているかを考えてみてください。可能なstateとActionについての簡単な概要やスケッチを作成することで、ユーザーインターフェースでユーザーが遭遇することで、モデルを整理するのに役立ちます。この初期の計画は、Eggplant DAIのワークスペースで行うことができます。
モデルの粒度はあなた次第です。ユーザーがログインするためのすべてのステップを実行する単一のログインActionを持つことができます。ユーザー名を入力する、パスワードを入力する、OKをクリックする、または、これらの各ステップに対して別のActionを作成することもできます。新しい画面やページではないもの、たとえばウィザードのパネルやホバーオーバーメニューも、stateと見なすことができます。
たとえば、旅行ウェブサイトをテストしている場合、ユーザーはまずウェブサイトに接続するかもしれません。ユーザーが接続すると、最初に見るページはホームページです。ホームページから、ユーザーが次に訪れることができる場所はいくつかあります:検索、マイアカウント、車、フライト、ホテル、レストラン。これらのページのいずれからでも、ユーザーはホームページに戻るか、別のページに移動することを選ぶかもしれません。ある時点で、ユーザーはサイトを終了します。
モデルを構築する
ユーザーが訪れることができる各ページや画面は、Eggplant DAIモデルのstateです。stateでユーザーが実行できるクリックやタップやその他の活動を表現するため、またはユーザーをモデル内のstate間で移動させるためにActionを使用します。
すべての要素名は一意である必要がありますが、要素に対して一貫性のある意味のある命名規則を確立します。たとえば、_home_と呼ばれるActionは、ユーザーを_Home page_と呼ばれるstateに移動させるかもしれません。また、_flights_と呼ばれるActionは、ユーザーを_Flights page_と呼ばれるstateに移動させるでしょう。
既存のモデルを出発点として使用することで時間を節約することができます。 Designer > Modelsから、再利用したいモデルを編集してSave Asをクリックします。
以下の指示に従ってモデルを構築します:
-
新しいモデルを作成するためにDesigner > Modelsに移動します。新しいモデルはStartのタイプを持つ一つのstateから始まり、Initialと名付けられます。このstateの名前は、右のペインのState Propertiesタブで変更することができます。
-
ツールバーでSaveをクリックします。新しいモデルのバージョン番号が表示されるCreate a version tagダイアログボックスが表示されます。
-
自動的なバージョン管理を許可するためにOKをクリックします。
ノート保存するまで変更したモデルを実行することはできません。モデルを初めて保存した後、モデルへの変更は自動的に保存されます。
重要Eggplant DAIは同じモデルの同時編集をサポートしていません。他のユーザーがあなたが現在開いているモデルを編集すると、Eggplant DAIは別の名前でモデルを保存するように警告します。
-
新しいstateを追加するには、ワークスペースで右クリックして、コンテキストメニューからNew Stateを選択します。また、ツールバーのNew Stateをクリックすることもできます。通常のstateは紫色の背景を持ちます。
-
stateにActionを追加するには、stateを選択し、その内部で右クリックして、コンテキストメニューからNew Actionを選択します。また、ツールバーのNew Actionをクリックすることもできます。通常のActionは灰色の背景を持ちます。
-
モデルを満たすたために必要なだけのstateとActionを作成します。
-
Action Propertiesタブを使用してActionをstateに接続します。Actionを選択し、Connections from actionメニューのチェックボックスを選択して適切なstateに接続します。
モデルワークスペースのActionからの接続メニューを使用してActionをstateに接続します
モデル内に_グローバルAction_も持つことができます。グローバルActionは、ユーザージャーニーの任意の時点で実行される可能性のあるActionで、モバイルデバイスの回転やショッピングサイトの検索などがあります。グローバルAction についての情報は、グローバルActionの作成を参照してください。
-
ユーザーを前のstateに戻すActionを表現するには、新しいActionを作成します。そのActionを選択したstateで、Action PropertiesタブのTypeリストからPreviousを選択します。PreviousTypeが選ばれると、Actionの形状が八角形に変わります。
-
モデルの出口点を定義するには、Connections from actionメニューで予定されたExitstateにActionを関連付けます。
-
モデルを保存します。
準備ができたら、トップメニューからRunをクリックしてモデルのテストを開始します。この段階では、モデルにエラーがないことを確認するために、モデルに対して探索的テストを実行するだけでよいです。SenseTalkスニペットをActionに接続するまでは、モデルは実際のテスト対象システム(SUT)に対して動作しないでしょう。
モデルに対してテストを実行する方法については、Live Runを参照してください。
モデルに複雑さを追加する
テスト要件が変更になったとき、モデルの複雑さも変わることがあります。ユーザーActionの表現、パスワードの入力やページ上での選択などを追加したり、stateやActionにParameterーを追加したりすることができます。たとえば、スワイプActionを持つモ バイルアプリをテストする場合、そのスワイプがどの方向に行うことができるかをParameterーを使用して定義することができます。
2つ以上のActionが特定の順序で行われなければならない場合、それらを_順序立てる_ことができます。Action Propertiesタブで、一連の最初のActionのタイプを通常に設定します。実行順序に必要なすべての後続Actionのタイプを順序立てに設定します。それらのActionを実行したい順序で接続します。Actionのタイプを順序立てに変更すると、そのActionの形状が楕円形に変わります。また、順序立てのActionを使用してループを作成することもできます。
この例では、Action10が実行された後にAction11が実行され、それが実行された後にAction12が実行されます。
Eggplant DAIでは、モデル内のstateやActionの重要性を、それらの重みを調整することで定義することができます。重み付けされた要素を含むテストを実行すると、Eggplant DAIの学習アルゴリズムは、テストケースでそれらのActionやstateを重みに応じて多かれ少なかれ頻繁にヒットさせるように調整します。
テストランを終了する最も簡単な方法は、予め定義されたExitstateを使用することですが、Action制限などを使用して自分で終了点を定義することもできます。モデルは、グローバルActionを除くと、何も残っていないstateに到達したときに終了します。あるstate内のすべてのActionが設定した前提条件に失敗した場合、またはstate内のすべてのActionが実行制限を超えた場合(またはこれらの組み合わせの場合)、モデルは終了します。
モデルにスニペットを追加する
Eggplant DAIをFusion Engineと統合している場合は、モデルにスニペットを追加できます。スニペットは、モデル内のアクションやstateに関連付けることができるSenseTalkコードの小さな断片です。Eggplant Studioスニペットが関連付けられたEggplant DAIモデルを実行すると、モデルはEggplant DAIで実行されるテスト対象システム(SUT) で実行されます。
SenseTalk snippetsの使用に関する完全な情報については、Eggplant DAIとFusion Engineの統合およびEggplant DAIモデルをスニペットにリンクをご覧ください。
モデルバージョニング
Saveをクリックしてモデルを_明示的に_保存するとき、次のいずれかを選択できます:
- Create a version tagダイアログボックスでモデルの新しいバージョン名を作成します。
- 自動生成されるデフォルトの名前を保持します。
新しいバージョンを作成したくない場合は、Cancelをクリックします。モデルが自動的に保存されると、行ったすべての変更がアクティブなバージョンに保存されます。
Designer > Modelsから、モデルの前のバージョンに戻すことがいつでも可能です。
モデルツリーの操作
作業スペースの左側にあるModel treeは、ツリー形式でモデルを表示します。Actionは、それらに関連付けられたstateの下に表示されます。
新しいモデルを作成すると、モデルツリーは自動的に以下の4つのstateで構成されます:
- Initial stateはモデルの出発点です。
- Error stateは、モデルがエラーを検出したときに呼び出されます。これは、モデル内のチェックが失敗した場合や、SenseTalkスニペット内での失敗によるものかもしれません。
- Cleanup stateは、モデルで最後に呼び出されるstateで、ExitまたはErrorstateの後に発生します。Cleanupstateを使用して、次のstateの前にSUTを整理することができます。つまり、アプリケーションを閉じるなどの作業を行います。
- Exit stateはモデルを終了します。
モデルツリーを使用して、Actionを一つのstateから別のstateに移動したり、Actionをstateからメインの作業領域に移動させてグローバルActionにすることができます。移動したいActionを選択し、新しい位置にドラッグします。そのActionが配置可能な場所にマウスを置くと、選択したActionのハイライトが緑色に変わります。
モデルツリーで作業領域と同じ操作を行うことができます。モデルツリーで右クリックしてコンテキストメニューを開き、モデルにAction、state、Parameterを追加できます。また、アイテムの削除、ブレークポイントの追加や削除、コンソールのクリアなどもコンテキストメニューから行うことができます。